/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.bean;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Zully
 */
@Entity
@Table(name = "control_reencauche")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "ControlReencauche.findAll", query = "SELECT c FROM ControlReencauche c"),
    @NamedQuery(name = "ControlReencauche.findById", query = "SELECT c FROM ControlReencauche c WHERE c.id = :id"),
    @NamedQuery(name = "ControlReencauche.findByFechaEnvio", query = "SELECT c FROM ControlReencauche c WHERE c.fechaEnvio = :fechaEnvio"),
    @NamedQuery(name = "ControlReencauche.findByTelefono", query = "SELECT c FROM ControlReencauche c WHERE c.telefono = :telefono"),
    @NamedQuery(name = "ControlReencauche.findByDireccion", query = "SELECT c FROM ControlReencauche c WHERE c.direccion = :direccion"),
    @NamedQuery(name = "ControlReencauche.findByNumFactura", query = "SELECT c FROM ControlReencauche c WHERE c.numFactura = :numFactura"),
    @NamedQuery(name = "ControlReencauche.findByFechaRecepcion", query = "SELECT c FROM ControlReencauche c WHERE c.fechaRecepcion = :fechaRecepcion"),
    @NamedQuery(name = "ControlReencauche.findByFechaRecepcionNull", query = "SELECT c FROM ControlReencauche c WHERE c.fechaRecepcion is null AND c.estado= :estado"),
    @NamedQuery(name = "ControlReencauche.findByNumGuiaRemision", query = "SELECT c FROM ControlReencauche c WHERE c.numGuiaRemision = :numGuiaRemision"),
    @NamedQuery(name = "ControlReencauche.findByEstadoTransaccion", query = "SELECT c FROM ControlReencauche c WHERE c.estadoTransaccion = :estadoTransaccion"),
    @NamedQuery(name = "ControlReencauche.findByEstado", query = "SELECT c FROM ControlReencauche c WHERE c.estado = :estado"),
    @NamedQuery(name = "ControlReencauche.findByFechaInsercionActualizacion", query = "SELECT c FROM ControlReencauche c WHERE c.fechaInsercionActualizacion = :fechaInsercionActualizacion")})
public class ControlReencauche implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "fecha_envio")
    @Temporal(TemporalType.DATE)
    private Date fechaEnvio;
    @Column(name = "telefono")
    private String telefono;
    @Column(name = "direccion")
    private String direccion;
    @Column(name = "num_factura")
    private String numFactura;
    @Column(name = "fecha_recepcion")
    @Temporal(TemporalType.DATE)
    private Date fechaRecepcion;
    @Column(name = "num_guia_remision")
    private String numGuiaRemision;
    @Basic(optional = false)
    @Column(name = "estado_transaccion")
    private boolean estadoTransaccion;
    @Basic(optional = false)
    @Column(name = "estado")
    private boolean estado;
    @Basic(optional = false)
    @Column(name = "fecha_insercion_actualizacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaInsercionActualizacion;
    @JoinColumn(name = "id_usuario", referencedColumnName = "id")
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Usuarios idUsuario;
    @JoinColumn(name = "id_distribuidor_neumaticos", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private DistribuidoresNeumaticos idDistribuidorNeumaticos;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idControlReencauche", fetch = FetchType.LAZY)
    private List<DetalleControlReencauche> detalleControlReencaucheList;

    public ControlReencauche() {
    }

    public ControlReencauche(Integer id) {
        this.id = id;
    }

    public ControlReencauche(Integer id, boolean estadoTransaccion, boolean estado, Date fechaInsercionActualizacion) {
        this.id = id;
        this.estadoTransaccion = estadoTransaccion;
        this.estado = estado;
        this.fechaInsercionActualizacion = fechaInsercionActualizacion;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Date getFechaEnvio() {
        return fechaEnvio;
    }

    public void setFechaEnvio(Date fechaEnvio) {
        this.fechaEnvio = fechaEnvio;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getNumFactura() {
        return numFactura;
    }

    public void setNumFactura(String numFactura) {
        this.numFactura = numFactura;
    }

    public Date getFechaRecepcion() {
        return fechaRecepcion;
    }

    public void setFechaRecepcion(Date fechaRecepcion) {
        this.fechaRecepcion = fechaRecepcion;
    }

    public String getNumGuiaRemision() {
        return numGuiaRemision;
    }

    public void setNumGuiaRemision(String numGuiaRemision) {
        this.numGuiaRemision = numGuiaRemision;
    }

    public boolean getEstadoTransaccion() {
        return estadoTransaccion;
    }

    public void setEstadoTransaccion(boolean estadoTransaccion) {
        this.estadoTransaccion = estadoTransaccion;
    }

    public boolean getEstado() {
        return estado;
    }

    public void setEstado(boolean estado) {
        this.estado = estado;
    }

    public Date getFechaInsercionActualizacion() {
        return fechaInsercionActualizacion;
    }

    public void setFechaInsercionActualizacion(Date fechaInsercionActualizacion) {
        this.fechaInsercionActualizacion = fechaInsercionActualizacion;
    }

    public Usuarios getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Usuarios idUsuario) {
        this.idUsuario = idUsuario;
    }

    public DistribuidoresNeumaticos getIdDistribuidorNeumaticos() {
        return idDistribuidorNeumaticos;
    }

    public void setIdDistribuidorNeumaticos(DistribuidoresNeumaticos idDistribuidorNeumaticos) {
        this.idDistribuidorNeumaticos = idDistribuidorNeumaticos;
    }

    @XmlTransient
    public List<DetalleControlReencauche> getDetalleControlReencaucheList() {
        return detalleControlReencaucheList;
    }

    public void setDetalleControlReencaucheList(List<DetalleControlReencauche> detalleControlReencaucheList) {
        this.detalleControlReencaucheList = detalleControlReencaucheList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ControlReencauche)) {
            return false;
        }
        ControlReencauche other = (ControlReencauche) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.camachosanchez.bean.ControlReencauche[ id=" + id + " ]";
    }
    
}
